package com.hb.trade.api.routine.entity;

import cn.hutool.json.JSONObject;
import com.hb.core.pojo.center.au.dto.RoleDTO;
import com.hb.core.pojo.center.au.entity.User;
import com.hb.core.pojo.enums.LoginTypeEnum;
import com.hb.trade.api.routine.service.login.CollectUserInfo;
import com.hb.trade.api.routine.service.login.TradeCollectUserInfo;
import lombok.Getter;
import lombok.Setter;
import org.fzzn.core.model.user.login.SimpleUserExample;

import java.util.List;

/**
 * 系统登录用户模型
 *
 * @author zhaojk
 */
@Setter
@Getter
public class TradeLoginUser extends SimpleUserExample {

    public TradeLoginUser(User user) {
        this(user, null);
    }

    public TradeLoginUser(User user, JSONObject extInfo) {
        setId(user.getId());
        setOrgId(user.getOrgId());
        setUsername(user.getUsername());
        setPassword(user.getPassword());
        setPhone(user.getPhone());
        setSaltSign(user.getSaltSource());
        setFullName(user.getFullName());

        // 其他扩展信息
        if (extInfo != null) {
            setExtInfo(extInfo);
        }
    }

    /**
     * 该用户拥有的招投标业务角色
     */
    private List<RoleDTO> biddingRoles;

    /**
     * 用户手机号
     */
    private String phone;

    /**
     * 构建用户的数据权限, 登录权限, 角色权限
     * 注意不要覆盖extInfo中的其他属性
     */
    public void collectInfo(LoginTypeEnum loginType) {
        if (loginType == null) {
            return;
        }
        switch (loginType) {
            // 交易平台登录
            case TRADE:
                CollectUserInfo collectUserInfo = new TradeCollectUserInfo();
                collectUserInfo.collectInfo(this);
                break;
            // 后台管理登录
            case MANAGE:
                //
            case EXPERT:
            default:
                break;
        }
    }
}
